Qual a diferença?

1) Parte 1

Considere os seguintes trechos de programas:

# peça A
print(something)
# peça B
print("something")

Tente agora:

Descreva resumidamente as diferenças, se houver, entre essas duas partes do código e como o Python as avalia.

Mostrar/Esconder A primeira parte do código procurará por uma variável chamada something e exibir seu valor (se essa variável não tiver sido definida, o Python levantará um NameError). O segundo imprimirá a string "something, que resultará nas letras something sendo exibidas na tela, literalmente.

2) Parte 2

Considere os seguintes trechos de programas:

# peça A
if condition1:
    print('meow')
if condition2:
    print('woof')
else:
    print('quack')
# peça B
if condition1:
    print('meow')
elif condition2:
    print('woof')
else:
    print('quack')
# peça C
if condition1:
    print('meow')
else:
    if condition2:
        print('woof')
    else:
        print('quack')

Tente agora:

Descreva resumidamente as diferenças, se houver, entre essas duas partes do código e como o Python as avalia.

Mostrar/Esconder

A peça "A" consiste de duas condicionais separadas:

  • A primeira imprimirá 'meow' se a condition1 for satisfeita e não fará nada de outra forma.
  • O segundo imprimirá 'woof' ou 'quack', dependendo se a condition2 for satisfeita. Portanto, a peça "A" pode resultar na impressão de um ou dois valores na tela.

As peças "B" e "C" se comportam de forma idêntica entre si (mas de forma diferente de "A"). Eles imprimirão exatamente um valor:

  • 'meow' se a condition1 for satisfeita,
  • 'woof' se a condition2 for satisfeita, mas a condition1 não for, ou
  • 'quack' se nenhuma das condições for satisfeita.

3) Parte 3

Considere os seguintes trechos de programas:

# peça A
x = [1, 2, 3]
x = x + [4]
y = x
x[0] = 7
# peça B
x = [1, 2, 3]
x = x.append(4)
y = x
x[0] = 7
# peça C
x = [1, 2, 3]
x.append(4)
y = x
x[0] = 7

Tente agora:

Descreva resumidamente as diferenças, se houver, entre essas duas partes do código e como o Python as avalia.

Mostrar/Esconder

Na peça "A", a linha x = x + [4] cria uma nova lista com 1, 2, 3 e 4 dentro dela. A linha y = x dá a esta lista um segundo nome, e fazer x[0] = 7 modifica essa lista (de forma que tanto x quanto y sofrem as mudanças).

A peça "C" é semelhante, exceto que, em vez de fazer uma nova lista contendo 1, 2, 3 e 4, um 4 é adicionado à lista criada na primeira linha. Da mesma forma que a peça "A", y e x apontam para a mesma lista na memória e, portanto, ambos veem a mudança de x[0] = 7.

A peça "B" é, de certa forma, a diferentona. Conforme escrito, esse código produzirá um erro. A linha x = x.append(4) resultará no nome x sendo associado a None, portanto, tentar executar x[0] = 7 resultará em um TypeError.